/*
 * Copyright @ 苏州瑞云信息技术有限公司 All rights reserved.
 */
package work.hutool.util;

import cn.hutool.core.util.ReflectUtil;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @author Sakura Shen
 * @description 反射工具类
 *
 * ReflectUtil的相关使用
 *
 * @date 2021/9/16
 */
public class ReflectUtilTest {

    public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {

        // 通过反射构造对象 参数是具体的类的class对象  不能是接口
        BeanUser beanUser = ReflectUtil.newInstanceIfPossible(BeanUserImpl.class);
        beanUser.eat();

        // 构造Method对象 调用Method的invoke动态执行指定的方法
        Method method = ReflectUtil.getMethod(BeanUserImpl.class, "eat");
        method.invoke(beanUser);

        // ReflectUtil.invoke()动态执行方法
        BeanUserImpl testClass = new BeanUserImpl();
        ReflectUtil.invoke(testClass, "eat");

    }
}
